package ar.com.drconta.ganancias.editors.example;

import org.eclipse.jface.viewers.ICellModifier;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.swt.widgets.TreeItem;

import ar.com.drconta.ganancias.editors.example.modelVO.Item;

class ItemCellModifier implements ICellModifier {
	  private Viewer viewer;

	  public ItemCellModifier(Viewer viewer) {
	    this.viewer = viewer;
	  }

	  public boolean canModify(Object element, String property) {
	    return true;
	  }

	  public Object getValue(Object element, String property) {
		  System.out.println("ar.com.drconta.ganancias.editors.example.ItemCellModifier.getValue(Object, String): " + element + " " + property);		  
		    Item p = (Item) element;
		    if (property.equals("detalle")){
		    	return p.getName();
		    }	    
		    if (property.equals("enero")){
		    	return p.getEnero().toString();
		    }
		    if (property.equals("febrero")){
		    	return p.getFebrero().toString();
		    }
		    if (property.equals("marzo")){
		    	return p.getMarzo().toString();
		    }
		    if (property.equals("abril")){
		    	return p.getAbril().toString();
		    }
			  if (property.equals("mayo")){
				  return p.getMayo().toString();					  
			  }
			  if (property.equals("junio")){
				  return p.getJunio().toString();
			  }
			  if (property.equals("julio")){
				  return p.getJulio().toString();
			  }	    	
			  if (property.equals("agosto")){
				  return p.getAgosto().toString();
			  }			  
			  if (property.equals("setiembre")){
				  return p.getSeptiembre().toString();
			  }	   	
			  if (property.equals("octubre")){
				  return p.getOctubre().toString();
			  }	    	
			  if (property.equals("noviembre")){
				  return p.getNoviembre().toString();
			  }			  
			  if (property.equals("diciembre")){
				  return p.getDiciembre().toString();
			  }	   		    
		    else
		      return null;
	  }

	  public void modify(Object element, String property, Object value) {
		  System.out.println("ar.com.drconta.ganancias.editors.example.ItemCellModifier.modify(Object, String, Object): " + element + " " + property + " " + value);
		  if (element instanceof TreeItem){
	    	
		    	Item p = (Item)((TreeItem) element).getData();	 
		    	
			    if (property.equals("detalle")){
			    	p.setName((String) value);
			    } else {
					    value = (value == null || value == "")? "0.0": value;
					    
					    float valueTemp = Float.parseFloat(value.toString());
					    try{
						  
						  if (property.equals("enero")){
							  p.setEnero(valueTemp);
						  }
						  if (property.equals("febrero")){
							  p.setFebrero(valueTemp);					  
						  }
						  if (property.equals("marzo")){
							  p.setMarzo(valueTemp);
						  }
						  if (property.equals("abril")){
							  p.setAbril(valueTemp);
						  }	    	
						  if (property.equals("mayo")){
							  p.setMayo(valueTemp);					  
						  }
						  if (property.equals("junio")){
							  p.setJunio(valueTemp);
						  }
						  if (property.equals("julio")){
							  p.setJulio(valueTemp);
						  }	    	
						  if (property.equals("agosto")){
							  p.setAgosto(valueTemp);
						  }			  
						  if (property.equals("setiembre")){
							  p.setSeptiembre(valueTemp);
						  }	   	
						  if (property.equals("octubre")){
							  p.setOctubre(valueTemp);
						  }	    	
						  if (property.equals("noviembre")){
							  p.setNoviembre(valueTemp);
						  }			  
						  if (property.equals("diciembre")){
							  p.setDiciembre(valueTemp);
						  }	   		
					    }catch(Exception e){
					    	System.out.println("ar.com.drconta.ganancias.editors.example.ItemCellModifier.modify(Object, String, Object): " + e);
					    }
		    }
	    }

	    viewer.refresh();
	  }
	}
